package com.future.message.Service;

import com.future.message.Utils.ResponseResult;
import com.future.message.pojo.RelevantReport;

import java.util.List;

public interface RelevantReportService {
    /**
     *     //批量删除(填报关联)
     *     Integer deleteRelevantList(Integer [] relevantReportId);
     */


    /**
     * 添加填报关联
     * @return
     */
    ResponseResult addRelevantReport(Integer userId,Integer firstIndexId,Integer secondIndexId,Integer thirdIndexId);

    /**
     * 删除填报关联
     * @param relevantReportId
     * @return
     */
    ResponseResult deleteRelevantReport(Integer relevantReportId);

    /**
     * 遍历该用户下的指标
     * @param userId
     * @return
     */
    ResponseResult findRelevantByUserId(Integer userId);

    /**
     * 遍历所有的分配指标
     * @return
     */
    ResponseResult findAllRelevantReport();

    /**
     * 根据id查找
     * @param relevantReportId
     * @return
     */
    ResponseResult findRelevantReportById(Integer relevantReportId);

    /**
     * 批量删除
     * @param relevantReportId
     * @return
     */
    ResponseResult deleteRelevantList(Integer [] relevantReportId);
    /**
     * 遍历分配给该用户的一级指标
     */
    ResponseResult findFirstIndexReport(Integer userId);

    /**
     * 遍历分配给用户的二级指标
     * @param userId
     * @param firstIndexId
     * @return
     */
    ResponseResult findSecondIndexReport(Integer userId,Integer firstIndexId);

    /**
     * 遍历分配给用户的三级指标
     * @param userId
     * @param secondIndexId
     * @return
     */
    ResponseResult findThirdIndexReport(Integer userId,Integer secondIndexId);

    /**
     * 判断是否分配给该用户指标
     * @param userId
     * @param thirdIndexId
     * @return
     */
    ResponseResult judgeOfRelevantReport(Integer userId,Integer thirdIndexId);

    /**
     * 查询该用户需要填写多少个三级指标---共有几个指标
     * @param userId
     * @return
     */
    ResponseResult countIndexNumberByUserId(Integer userId);

    /**
     * 查询该用户完成了多少个三级指标---已完成几个指标
     * @param userId
     * @return
     */
    ResponseResult countCompleteIndexNumberByUserId(Integer userId);

    /**
     * 查询分配给该用户一级指标下的指标数量---该一级指标下总共有几个需要完成
     * @param userId
     * @param indexId
     * @return
     */
    ResponseResult countIndexNumberByUserIdAndIndexId(Integer userId,Integer indexId);

    /**
     * 查询分配给该用户一级指标下的完成的指标数量---该一级指标下完成了几个指标
     * @param userId
     * @param indexId
     * @return
     */
    ResponseResult countCompleteIndexNumberByUserIdIndexId(Integer userId,Integer indexId);

    /**
     * 判断用户是否填写填报关联
     * @param relevantReportId
     * @return
     */
    ResponseResult judgeOfReport(Integer relevantReportId);

    /**
     * 查看二级指标是否完成
     * @param secondIndexId
     * @return
     */
    ResponseResult findThirdIndexListBySecondIndexList(Integer secondIndexId);

    /**
     * 查询二级指标完成度
     * @param secondIndexId
     * @return
     */
    ResponseResult findSecondCompleteRate(Integer secondIndexId);

    /**
     * 给用户分配一级指标和以下的所有指标
     * @param userId
     * @param firstIndexId
     * @return
     */
    ResponseResult addRelevantReportByFirstIndexId(Integer userId,Integer firstIndexId);

    /**
     * 给用户分配二级指标下的所有指标
     * @param userId
     * @param firstIndexId
     * @param secondIndexId
     * @return
     */
    ResponseResult addRelevantReportBySecondIndexId(Integer userId,Integer firstIndexId,Integer secondIndexId);

    /**
     * 判断当前等级指标是否分配给用户,遍历用户
     * @param grade
     * @param indexId
     * @return
     */
    ResponseResult findUserByOfDistribution(Integer grade,Integer indexId);

    ResponseResult deleteReportsByIndexIdAndUserId(Integer indexId,Integer userId,Integer indexGrade);

}
